package cn.hj.api;

import cn.hj.api.dto.*;
import cn.hj.api.response.Response;

import java.util.List;

/**
 * 抽奖服务接口
 */
public interface IRaffleStrategyService {

    /**
     * 组装抽奖策略
     * @param strategyId
     * @return
     */
    Response<Boolean> assemblyLotteryStrategy(Long strategyId);

    /**
     * 查询奖品列表配置
     * @param requestDTO 抽奖奖品列表查询请求参数
     * @return
     */
    Response<List<RaffleAwardListResponseDTO>> queryRaffleAwardList(RaffleAwardListRequestDTO requestDTO);


    /**
     * 执行随机抽奖
     * @param requestDTO 抽奖请求参数
     * @return
     */
    Response<RaffleStrategyResponseDTO> performRaffle(RaffleStrategyRequestDTO requestDTO);

    /**
     * 查询抽奖策略权重规则，给用户展示出抽奖N次后必中奖奖品范围
     *
     * @param request 请求对象
     * @return 权重奖品配置列表「这里会返回全部，前端可按需展示一条已达标的，或者一条要达标的」
     */
    Response<List<RaffleStrategyRuleWeightResponseDTO>> queryRaffleStrategyRuleWeight(RaffleStrategyRuleWeightRequestDTO request);

}
